#ifndef _OCPP_Streamline_H__
#define _OCPP_Streamline_H__

#include "Grid3dData.h"

class StreamLine
{
public:
    static StreamLine *createInstance()
    {
        return new StreamLine();
    }

    static void releaseInstance(StreamLine *ptr)
    {
        delete ptr;
    }

    void setImage(const emscripten::val &jsImage);

    const emscripten::val run(const emscripten::val &jsOptions);

    std::tuple<int, int> trimBySpeed(std::vector<Cesium::Cartesian3> &line, float speed, float FrontSpeedClipFactor, float EndSpeedClipFactor);

    std::vector<Cesium::Cartesian2> getInterestPoints(Cesium::Rectangle insterestExtent);
    std::unique_ptr<Grid3dData> grid3dData;
};

#endif
